//#include <iostream>
//
//using namespace std;
//const int N = 110;
//char a[N];
//int n;
//int main()
//{
//	cin >> n;
//	int cnt = 0;
//	for (int i = 1; i <= n; i++) cin >> a[i];
//	if (n % 2 == 0)
//	{
//		for (int i = 1; i <= n; i++)
//		{
//			if (cnt == 2)
//			{
//				cout << '-';
//				cnt = 0;
//			}
//			cout << a[i];
//			cnt++;
//		}
//	}
//	else
//	{
//		for (int i = 1; i <= n - 3; i++)
//		{
//			if (cnt == 2)
//			{
//				cout << '-';
//				cnt = 0;
//			}
//			cout << a[i];
//			cnt++;
//		}
//		if(n != 3)
//			cout << '-';
//		cout << a[n - 2] << a[n - 1] << a[n];
//	}
//	cout << endl;
//	return 0;
//}
#include <iostream>
typedef long long LL;
using namespace std;

LL ret;
void  dfs(LL x, LL y)
{
	if (x == 0 || y == 0) return;

	LL max = x, min = y;
	if (x < y) max = y, min = x;
	ret += min * 4; 
	dfs(min, max - min);
}
int main()
{
	LL x, y; scanf("%lld %lld", &x, &y);
	dfs(x, y);
	printf("%lld", ret);

	return 0;
}


//
//#include <iostream>
//#include <vector>
//
//using namespace std;
//const int N = 2e5 + 10;
//vector<int> a[N];
//int b[N];
//int main()
//{
//	int n; cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> b[i];
//		a[b[i]].push_back(i);
//	}
//	int cnt = 1;
//	while (1)
//	{
//		for (int i = 1; i <= n; i++)
//		{
//			for (auto& t : a[i])
//			{
//				if (t == i) break;
//				a[b[i]].push_back(t);
//			}
//		}
//		cnt++;
//	}
//	cout << cnt << endl;
//	return 0;
//}
//#include <iostream>
//
//using namespace std;
//
//int main()
//{
//
//	return 0;
//}